Middleware হল সফটওয়্যার বা কোডের একটি স্তর যা ASP.NET Core অ্যাপ্লিকেশনটির রিকোয়েস্ট-পদ্ধতি চেইনে ব্যবহৃত হয়। এটি একটি পেইজ বা HTTP রিকোয়েস্ট প্রসেসিং সিস্টেমে ইনপুট এবং আউটপুটের মধ্যে একটি "মাঝখানে" অবস্থান নেয়। সহজভাবে বললে, Middleware কোডের একাধিক অংশ একে অপরের সাথে যোগাযোগ করতে সক্ষম করে, যাতে সার্ভার ক্লায়েন্ট থেকে আসা রিকোয়েস্ট এবং সার্ভার থেকে বের হওয়া রেসপন্স প্রসেস করতে পারে।
এটি অ্যাপ্লিকেশনের রিকোয়েস্ট লাইফসাইকেল পরিচালনার জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে এবং সাধারণত একটি pipeline (পাইপলাইন) হিসেবে কাজ করে, যেখানে একাধিক middleware একে অপরের সাথে সম্পর্কিতভাবে কাজ করে।
Middleware সাধারণত রিকোয়েস্ট রিসিভ করার পর প্রথমে প্রসেস শুরু করে এবং তারপর রেসপন্স আউটপুট দেয়। যখন একটি HTTP রিকোয়েস্ট একটি ASP.NET Core অ্যাপ্লিকেশনে আসে, তখন তা আগে middleware পিপলাইনের মধ্য দিয়ে প্রবাহিত হয় এবং প্রত্যেকটি middleware এর মধ্যে কিছু নির্দিষ্ট কাজ সম্পাদন করে। এর পরে, রেসপন্স আবার middleware পিপলাইনে মাধ্যমে ফিরে যায়।
একটি সাধারণ middleware পিপলাইন নিম্নরূপ কাজ করে:
next()
মেথড কল করে। এর মাধ্যমে পরবর্তী middleware কাজ শুরু করবে।ASP.NET Core অ্যাপ্লিকেশনগুলিতে বিভিন্ন ধরনের middleware ব্যবহৃত হয়। কিছু উদাহরণ হলো:
ASP.NET Core অ্যাপ্লিকেশনে middleware কনফিগার করা হয় Startup.cs
ফাইলের Configure
মেথডে। এখানে আপনি middleware গুলি যোগ করতে পারেন এবং তাদের ক্রম ঠিক করতে পারেন।
public class Startup
{
public void Configure(IApplicationBuilder app)
{
// Default middleware
app.UseRouting(); // Request routing middleware
app.UseAuthentication(); // Authentication middleware
app.UseAuthorization(); // Authorization middleware
// Custom middleware
app.Use(async (context, next) =>
{
// Custom logic before passing the request
await next.Invoke();
// Custom logic after the request has passed through the pipeline
});
// Static files middleware
app.UseStaticFiles(); // Serves static files like HTML, CSS, JS
// Fallback to a page or other action if nothing matches
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // MVC Controller endpoints
});
}
}
এখানে Use
মেথডটি বিভিন্ন middleware যুক্ত করার জন্য ব্যবহার করা হয়। প্রাথমিকভাবে, middleware গুলি রিকোয়েস্টের উপর কাজ করে, তারপর রেসপন্স ফেরত পাঠায়।
ASP.NET Core-এ custom middleware তৈরি করা খুবই সহজ। সাধারণত, একটি ক্লাস তৈরি করা হয় যা IMiddleware
ইন্টারফেস ইমপ্লিমেন্ট করে বা Invoke
মেথডের মাধ্যমে কার্যকর করা হয়।
এখানে একটি উদাহরণ দেওয়া হলো:
public class MyCustomMiddleware
{
private readonly RequestDelegate _next;
public MyCustomMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// Custom logic before passing to next middleware
Console.WriteLine("Request received by custom middleware");
await _next(context); // Passing control to next middleware
// Custom logic after the request has passed through the pipeline
Console.WriteLine("Response sent from custom middleware");
}
}
এটি এরপর Startup.cs
-এ Configure
মেথডে যুক্ত করা হয়:
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<MyCustomMiddleware>();
}
Middleware হল .NET Core অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ যা HTTP রিকোয়েস্ট এবং রেসপন্সের মধ্যে একটি পিপলাইন তৈরি করে। এটি বিভিন্ন কাজ যেমন Authentication, Authorization, লোগিং, এক্সসেপশন হ্যান্ডলিং এবং স্ট্যাটিক ফাইল সার্ভিংয়ের জন্য ব্যবহৃত হয়। ASP.NET Core অ্যাপ্লিকেশনে middleware কনফিগার এবং কাস্টম middleware তৈরি করা সহজ, যা অ্যাপ্লিকেশনকে আরও কার্যকর এবং কাস্টমাইজেবল করে তোলে।
common.read_more